﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using service_desk_blred.Models;
using service_desk_blred.Utils;

namespace service_desk_blred.Controllers
{
    public class EmpresaController : Controller
    {

        private EmpresaService EmpresaService;
        public ComumService ComumService;

        public EmpresaController()
        {
            EmpresaService = new EmpresaService();
            if (ComumService == null) { ComumService = new ComumService(); }
        }

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Cadastrar()
        {

            EmpresaModel model = new EmpresaModel();
            ResponseInfo responseEstados = ComumService.RecuperarTodosEstados();
            
            model.ListaEstados = new List<SelectListItem>();

            foreach (LocalidadeModel item in (List<LocalidadeModel>)responseEstados.objResponse)
            {
                model.ListaEstados.Add(new SelectListItem { Text = item.SiglaEstado + " - " + item.NomeEstado, Value = item.IdEstado.ToString() });
            }

            return View(model);
        }

        [HttpPost]
        public ActionResult Cadastrar(EmpresaModel model)
        {
            if (ModelState.IsValid)
            {

                ResponseInfo response = EmpresaService.CadastrarEmpresa(model);

                if (response.isSuccess())
                {
                    return RedirectToAction("Sucesso", "Empresa");

                }
                else
                {
                    ModelState.AddModelError("", "Erro ao cadastrar empresa:  " + response.descricao);
                }
                return View();
            }
            else
            {

                ModelState.AddModelError("", "Erro ao cadastrar empresa");

                return View();

            }
        }

        public ActionResult Gerenciar() {

            ResponseInfo response = EmpresaService.recuperarTodos();
            List<EmpresaModel> empresa = (List<EmpresaModel>)response.objResponse;

            return View();

        }
        public ActionResult Editar(int id)
        {

            ResponseInfo response = EmpresaService.recuperarPorId(id);

            EmpresaModel model = (EmpresaModel)response.objResponse;

            return View(model);
        }

        [HttpPost]
        public ActionResult Editar(EmpresaModel model)
        {
            ResponseInfo response = EmpresaService.update(model);
            if (response.isSuccess())
            {
                return RedirectToAction("Sucesso", "Empresa");
            }
            else
            {
                ModelState.AddModelError("", response.descricao);
                return View();
            }
        }


        public ActionResult Sucesso()
        {
            ViewData["TitleMessage"] = "Operação realizada com Sucesso";
            return View();
        }

    }
}
